/**
 * 
 */
package compilador.analizadorSintactico.categoriasSintacticas;

import javax.swing.tree.DefaultMutableTreeNode;

import compilador.analizadorLexico.simbolos.SimboloLexico;

/**
 * @author Nolberto Castellanos Rodriguez
 * @author Yurani Alejandra Salamanca Lotero
 *
 * Clase que representa un factor
 */
public class Factor
{
	
//	-------------------------------------------------------------------------------------------------
//	ATRIBUTOS
//	-------------------------------------------------------------------------------------------------
	
	/**
	 * Atributo que representa un factor que puede ser un identificador, numero o cadena
	 */
	private SimboloLexico factor;

	
//	-------------------------------------------------------------------------------------------------
//	CONTRUCTORES
//	-------------------------------------------------------------------------------------------------
	/**
	 * @param factor
	 */
	public Factor(SimboloLexico factor) {
		super();
		this.factor = factor;
	}	
	
//	-------------------------------------------------------------------------------------------------
//	METODOS
//	-------------------------------------------------------------------------------------------------	
	
	/**
	 * Metodo que permite agregar hojas al nodo de la clase
	 * @return el nodo de la clase con sus hojas
	 */
	public  DefaultMutableTreeNode getArbolVisual(){
		DefaultMutableTreeNode miRaiz =  new  DefaultMutableTreeNode("Factor");
		
		miRaiz.add(new DefaultMutableTreeNode(factor.getLexema()));
		return miRaiz;
	}
	
//	-------------------------------------------------------------------------------------------------
//	GETTERS & SETTERS
//	-------------------------------------------------------------------------------------------------
	
	/**
	 * Metodo que nos retorna el valor de factor
	 * @return  factor. Valor retornado
	 */
	public SimboloLexico getFactor() {
		return factor;
	}

	/**
	 * Metodo que permite asignar el valor de factor
	 * @param factor. Valor a asignar factor
	 */
	public void setFactor(SimboloLexico factor) {
		this.factor = factor;
	}
	
}